package com.ncloud.resman.service.impl;

import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ncloud.resman.entity.SwitchSubAssign;
import com.ncloud.resman.mapper.CabinetUseMapper;
import com.ncloud.resman.mapper.SequenceMapper;
import com.ncloud.resman.mapper.SwitchSubAssignMapper;
import com.ncloud.resman.service.SwitchSubAssignService;
@Service
public class SwitchSubAssignServiceImpl implements SwitchSubAssignService{
	@Resource
	private SwitchSubAssignMapper switchSubAssignMapper;
	@Resource
	private CabinetUseMapper cabinetUseMapper;
	@Resource
	private SequenceMapper sequenceMapper;
	@Override
	public JSONObject getSwitchInfo(JSONObject json) {
		List<JSONObject> rooms = switchSubAssignMapper.getRoomAll();
		for(int i=0;i<rooms.size();i++){
			JSONObject room = rooms.get(i);
			List<JSONObject> cabinets = switchSubAssignMapper.getCabinetByRoomId(room.getInteger("roomId"));
			room.put("cabinets", cabinets);
			for(int j=0;j<cabinets.size();j++){
				JSONObject cabinet = cabinets.get(j);
				List<JSONObject> switchs = switchSubAssignMapper.getDeviceSwitchByCabinetId(cabinet.getLong("cabinetId"));
				cabinet.put("switchs", switchs);
			}
		}
		JSONObject result = new JSONObject();
		result.put("rooms", rooms);
		return result;
	}
	@Override
	public JSONObject getSwitchSubAssignInfo(JSONObject json) {
		long deviceId = json.getLongValue("deviceId");
		JSONObject result = new JSONObject();
		List<JSONObject> switchBase = switchSubAssignMapper.getSwitchBaseInfo(deviceId);
		if(switchBase!=null && switchBase.size()>0){
			result.put("switchBase", switchBase.get(0));
		}
		List<JSONObject> switchSubAssign = switchSubAssignMapper.getSwitchSubAssignInfo(deviceId);
		if(switchSubAssign!=null && switchSubAssign.size()>0){
			result.put("switchSubAssign", switchSubAssign);
		}
		return result;
	}
	@Override
	public int editSwitchSubAssign(SwitchSubAssign switchSubAssign) {
		List<JSONObject> temps = switchSubAssignMapper.getSwitchSubAssignById(switchSubAssign.getDeviceId(), switchSubAssign.getSubNo());
		if(temps!=null && temps.size()>0){
			return switchSubAssignMapper.updateSwitchSubAssign(switchSubAssign);
		}else{
			return switchSubAssignMapper.insertSwitchSubAssign(switchSubAssign);
		}
	}
	@Override
	public int deleteSwitchSubAssign(Long deviceId, int subNo) {
		return switchSubAssignMapper.deleteSwitchSubAssign(deviceId, subNo);
	}
	@Override
	public JSONArray getRoomAll(JSONObject json) {
		List<JSONObject> rooms = switchSubAssignMapper.getRoomAll();
		JSONArray results=JSON.parseArray(JSON.toJSONString(rooms));
		return results;
	}
	@Override
	public JSONArray getCabinetByRoomId(Integer roomId) {
		List<JSONObject> cabinets = switchSubAssignMapper.getCabinetByRoomId(roomId);
		JSONArray results=JSON.parseArray(JSON.toJSONString(cabinets));
		return results;
	}
	@Override
	public JSONArray getManageIpByCabinetId(long cabinetId) {
		List<JSONObject> ips = switchSubAssignMapper.getManageIpByCabinetId(cabinetId);
		JSONArray results=JSON.parseArray(JSON.toJSONString(ips));
		return results;
	}
	@Override
	public JSONArray getSubNoById(Long deviceId,String eqptType) {
		List<JSONObject> subs = new ArrayList<JSONObject>(); 
		if("1".equals(eqptType)){
			subs=switchSubAssignMapper.getDeviceIpById(deviceId);
		}else if("2".equals(eqptType)){
			subs=switchSubAssignMapper.getSwitchSubById(deviceId);
		}
		JSONArray results=JSON.parseArray(JSON.toJSONString(subs));
		return results;
	}
}
